#ifndef _GTX31X_IIC_H_
#define _GTX31X_IIC_H_

#include "gtx31x_board.h"

#if _KEYBOARD_FUNCTION_ENABLE_

// 延时周期
#define GTX31X_IIC_IO_DELAY_TIME               (8ul)

/**
 * @brief IIC写一字节
 *
 * @param SlaveAddr - 从机编码
 * @param WriteAddr - 写入寄存器地址
 * @param InData    - 写入的数据
 */
extern void Gtx31xIicWriteOneByte(uint8_t SlaveAddr, uint8_t WriteAddr, uint8_t InData);

/**
 * @brief IIC读一字
 *
 * @param SlaveAddr - 从机编码
 * @param ReadAddr  - 读取的地址器地址
 * @return uint8_t  - 寄存器数值
 */
extern uint8_t Gtx31xIicReadOneByte(uint8_t SlaveAddr, uint8_t ReadAddr);

/**
 * @brief IIC写入一定数据
 *
 * @param SlaveAddr - 从机编码
 * @param WriteAddr - 写入寄存器地址
 * @param pInData   - 写入的数据
 * @param InSize    - 写入数据长度
 */
extern void Gtx31xIicWriteBytes(uint8_t SlaveAddr, uint8_t WriteAddr, const void *pInData, uint16_t InSize);

/**
 * @brief IIC读取一定长度数据
 *
 * @param SlaveAddr - 从机编码
 * @param ReadAddr  - 读取的地址器地址
 * @param pOutData  - 读取的数据
 * @param OutSize   - 读取的长度
 */
extern void Gtx31xIicReadBytes(uint8_t SlaveAddr, uint8_t ReadAddr, void *pOutData, uint16_t OutSize);

#endif
#endif
